from not_so_free_marker.enums import VarTypeEnum
from not_so_free_marker.models import Variant
from not_so_free_marker.useful_func import *

# 处理表达式,为了不和程序的import重合,单独放到一个文件中
def process(processed_var_list: list, data: map):
    processed_var_list = list(map(__private_process_var, processed_var_list))
    func_str = "".join(processed_var_list)
    processed_str = func_str
    try:
        processed_str = eval(func_str)
    except:  # 如果出错,就把原文放进去
        processed_str = func_str
    return str(processed_str)


# 处理变量
# 对于${ func(a.b.c) }这样的内容.如果a.b.c是文本,就需要把文本加上引号返回,使得一会eval的时候,解释器执行的是func("a.b.c的值"),
# 如果是其他类型,不要理会,都变成str类型返回.
def __private_process_var(var: Variant):
    if (var.type == VarTypeEnum.Var) and isinstance(var.content, str):
        return "\"{0}\"".format(var.content)
    else:
        return str(var.content)
    os.path.abspath()
